1. Field of the Invention
The present application is related generally to a data processing system and in particular to a method and apparatus for a virtual network. More particularly, the present application is directed to a computer implemented method, apparatus, and computer usable program code for performing segmentation off-load between logical partitions over a virtual network.
2. Description of the Related Art
Modern computing systems support virtualization to divide one physical machine into multiple logical partitions, also referred to as virtual machines. A separate and independent operating system (OS) is run on each logical partition. Each logical partition is isolated from every other logical partition to keep a malfunction or problem in one logical partition from affecting other logical partitions located on the same physical machine.
In a local area network (LAN), separate physical computers connect and communicate with each other by means of a physical Ethernet adapter on each computer. Likewise, logical partitions in a logically partitioned data processing system connect and communicate with other logical partitions on the same machine by means of a virtual Ethernet adapter on each logical partition. A virtual Ethernet adapter is a software implementation that simulates a physical Ethernet adapter. Virtual Ethernet adapters allow networking applications running on a logically partitioned machine to function without modification to the applications.
Hardware acceleration technology has been used to allow operating systems to off-load work, such as segmentation, to the hardware Ethernet adapter. Segmentation is a process for breaking up large data messages into smaller segments that can pass through all network elements. Segmentation is necessary because data in a network is typically transmitted from one entity to another entity in the network in a data packet or frame. A maximum transmission unit (MTU) is the largest size packet or frame that can be sent over the network. Therefore, if a data message larger than the MTU size needs to be sent over an Ethernet network, segmentation is performed to convert the message into data segments equal to or less than the MTU size.
TCP segmentation off-load (TSO) allows the operating system to pass the job of performing segmentation to the hardware Ethernet adapter. Segmentation off-load is the process of off-loading the task of segmenting data to the network adapter or network card. In other words, segmentation off-load is the process of shifting the task of segmenting data from the operating system to a hardware adapter. For example, if a 32,768 byte message needs to be transmitted over an Ethernet network with an MTU size of 1500 bytes and the Ethernet adapter supports TSO, the operating system can simply give the entire message to the Ethernet adapter. The Ethernet adapter performs TCP segmentation to break the message into 1460 byte units for transmission. However, in the absence of TSO, the operating system breaks the message into 23 units of 1460 bytes each and sends each of the 23 data units through the TCP stack to transmit the message. Thus, performing segmentation in the TCP stack may result in 4 to 5 times more processor cycle consumption than in TSO. Thus, an Ethernet that utilizes TSO reduces processor cycle consumption and improves processor efficiency. However, TSO cannot be implemented in virtual Ethernet adapters to improve processor performance because a virtual Ethernet adapter is a software implementation rather than a hardware implementation. Therefore, performing segmentation in the virtual Ethernet adapter can consume an equivalent number of processor cycles as segmentation tasks in the TCP stack.
In another solution, a virtual Ethernet network can be configured with a larger MTU size to avoid the need for segmentation. This method allows the TCP stack to reduce utilization of processor cycles. However, the increased MTU size configuration applies to all messages transmitted through the network, including TCP and user datagram protocol (UDP) messages. UDP does not support variable MTU size. Therefore, increasing the MTU size can cause UDP network applications to cease function when one of the virtual Ethernet network adapters is configured with a smaller MTU size than other virtual Ethernet adapters.
Changing the MTU size can also result in problems during acknowledgement generation and congestion window maintenance work on a per maximum segment size (MSS) basis. In addition, some logical partitions may implement operating systems that do not support large incoming data packets that exceed the logical partition MTU size, such as in Linux® operating systems. In some of these cases, the operating system will crash when a data packet that exceeds the MTU size is received. Therefore, current methods fail to provide an efficient and reliable means to reduce segmentation in a logical partition data processing system.